"""
路径辅助工具模块
提供动态路径生成功能，根据当前日期自动生成微信文件路径
"""

import os
from datetime import datetime


def get_wechat_file_base_path() -> str:
    r"""
    获取微信文件基础路径（自动根据当前年月生成）
    
    基础路径: E:\Users\13571\Documents\WeChat Files\suntek512\WeChat Files\suntek512\FileStorage\File\
    动态部分: YYYY-MM（根据当前日期）
    
    Returns:
        str: 完整的微信文件路径
        
    Example:
        >>> get_wechat_file_base_path()
        'E:\\Users\\13571\\Documents\\WeChat Files\\suntek512\\WeChat Files\\suntek512\\FileStorage\\File\\2025-10'
    """
    # 获取当前年月
    current_date = datetime.now()
    year_month = current_date.strftime("%Y-%m")
    
    # 基础路径
    base_path = r"E:\Users\13571\Documents\WeChat Files\suntek512\WeChat Files\suntek512\FileStorage\File"
    
    # 拼接完整路径
    full_path = os.path.join(base_path, year_month)
    
    return full_path


def get_analysis_results_path() -> str:
    r"""
    获取分析结果目录路径（在微信文件基础路径下）
    
    Returns:
        str: 分析结果完整路径
        
    Example:
        >>> get_analysis_results_path()
        'E:\\Users\\13571\\Documents\\WeChat Files\\suntek512\\WeChat Files\\suntek512\\FileStorage\\File\\2025-10\\analysis_results'
    """
    base_path = get_wechat_file_base_path()
    analysis_path = os.path.join(base_path, "analysis_results")
    
    return analysis_path


def get_wechat_file_path(filename: str) -> str:
    r"""
    获取微信文件的完整路径
    
    Args:
        filename: 文件名（例如: "告警导出20251010155740.xlsx"）
    
    Returns:
        str: 文件的完整路径
        
    Example:
        >>> get_wechat_file_path("告警导出20251010155740.xlsx")
        'E:\\Users\\13571\\Documents\\WeChat Files\\suntek512\\WeChat Files\\suntek512\\FileStorage\\File\\2025-10\\告警导出20251010155740.xlsx'
    """
    base_path = get_wechat_file_base_path()
    file_path = os.path.join(base_path, filename)
    
    return file_path


# 为了向后兼容，提供一个获取默认Excel文件路径的函数
def get_default_excel_path() -> str:
    """
    获取默认的Excel文件路径（用于LLM分析）
    注意: 这个函数返回的路径可能不存在，使用前需要检查
    
    Returns:
        str: 默认Excel文件路径
    """
    # 这里可以实现更智能的逻辑，比如查找最新的告警导出文件
    # 目前返回一个示例文件名
    return get_wechat_file_path("告警导出20251010155740.xlsx")


def find_latest_alarm_excel() -> str:
    """
    在微信文件目录中查找最新的告警导出Excel文件
    
    Returns:
        str: 最新告警导出文件的完整路径，如果未找到则返回空字符串
    """
    base_path = get_wechat_file_base_path()
    
    # 检查目录是否存在
    if not os.path.exists(base_path):
        print(f"⚠️ 路径不存在: {base_path}")
        return ""
    
    try:
        # 获取所有以"告警导出"开头的xlsx文件
        excel_files = [
            f for f in os.listdir(base_path)
            if f.startswith("告警导出") and f.endswith(".xlsx")
        ]
        
        if not excel_files:
            print(f"⚠️ 未找到告警导出文件: {base_path}")
            return ""
        
        # 按文件修改时间排序，获取最新的文件
        excel_files.sort(
            key=lambda x: os.path.getmtime(os.path.join(base_path, x)),
            reverse=True
        )
        
        latest_file = excel_files[0]
        latest_path = os.path.join(base_path, latest_file)
        
        print(f"✅ 找到最新告警导出文件: {latest_file}")
        return latest_path
        
    except Exception as e:
        print(f"❌ 查找告警导出文件失败: {str(e)}")
        return ""